#include "objetscene.h"


//--------------------- Constructeurs et destructeur -------------------

/*
 * Constructeur par défault
 */
ObjetScene::ObjetScene()
{
}

/*
 * Constructeur avec une liste de faces
 * @param faces : les faces du nouvel objet
 */
ObjetScene::ObjetScene(QList<Face*>  faces)
    : _faces(faces)
{

}

/*
 * Constructeur par recopie
 * @param objetScene : objet à recopier
 */
ObjetScene::ObjetScene(const ObjetScene& objetScene)
{
    for(int i = 0; i < objetScene._faces.size(); ++i)
    {
        this->_faces.push_back((new Face(*objetScene._faces[i])));
    }
}

/*
 * Destructeur
 */
ObjetScene::~ObjetScene()
{

}

//----------------------------------------------------------------------
//--------------------- Méthodes ---------------------------------------

/*
 * Fonction permettant d'ajouter une face
 * @param face : le face à rajouter
 */
void ObjetScene::ajouterFace(Face& face)
{
    _faces.push_back(&face);
}

/*
 * Fonction permettant de récupérer le nombre de faces
 * @return int : le nombre de faces de l'objet
 */
int ObjetScene::getNbFaces()
{
    return _faces.size();
}

/*
 * Fonction permettant de supprimer une face
 * @param i : indice de la face à supprimer
 */
void ObjetScene::supprimerFace(int i)
{
    if(i < 0 || i >= _faces.size())
    {
        throw std::string("ObjetScene.supprimerFace : erreur, l'indice i est hors limite.");
    }

    _faces.removeAt(i);
}

/*
 * Fonction de dessin, on dessine les faces une par une
 */
void ObjetScene::dessiner()
{
    for(int i = 0; i < _faces.size(); ++i)
    {
        _faces[i]->dessiner();
    }
}

//----------------------------------------------------------------------
//--------------------- Accesseurs -------------------------------------

//----------------------------------------------------------------------
//--------------------- Surcharge des opérateurs -----------------------

//----------------------------------------------------------------------
